#include "janela.h"


janela::janela(int _x, int _y, int _w, int _h, vector<sprite> *imagens, sprite *spr_pedaco, vector<text*> *font, string _titulo, vector<string> *_conteudo)
{
	x=_x;
	y=_y;
	w=_w;
	h=_h+32;
	aberto = false;
	arrastando = false;

	im_botoes=imagens;
	botao_fecha = new Botao(x+w-32,y,im_botoes->at(0));

	spr_pedacoJ=spr_pedaco;

	fonte=font;
	titulo=_titulo;
	conteudo=_conteudo;
}

janela::janela(int _x, int _y, int _w, int _h, vector<sprite> *imagens, sprite *spr_pedaco, vector<text*> *font, string _titulo)
{
	x=_x;
	y=_y;
	w=_w*32;
	h=(_h+1)*32;
	aberto = false;
	arrastando = false;
	pressionado = false;

	im_botoes=imagens;
	botao_fecha = new Botao(x+(_w-1)*32,y,im_botoes->at(0));

	spr_pedacoJ=spr_pedaco;

	fonte=font;
	titulo=_titulo;
	conteudo=new vector<string>;
	conteudo->resize(1);
	conteudo->at(0)=" ";
}

janela::~janela(void)
{
}


void janela::atualizar()
{
	if (aberto==true)
	{
			
		movimentar();

		desenhar();

		if (arrastando==false)
		{
			if (botao_fecha->foiPressionado()==true)
			{
				aberto=false;
			}
		}

		if (isButtonPressed(MOUSE::Left))
		{
			pressionado=true;
		}
		else
		{
			pressionado=false;
			arrastando=false;
		}
	}
}

void janela::setAberto()
{
	if (aberto==true)
	{
		aberto=false;
	}
	else
	{
		aberto=true;
	}
}

void janela::arrumarPosicao(int _x, int _y)
{
	x=_x;
	y=_y;
	botao_fecha->AtualizaPosicao(x+w-32,y);
}

//metodos privados

void janela::desenhar()
{
	if (aberto==true)
	{
		for(int i=0; i<h/32; i++)
		{
			for(int j=0; j<w/32; j++)
			{
				spr_pedacoJ->draw(x+j*32, y+i*32);
			}
		}
		
		rectangle(x,y,w,h,2,0,0,0);
		line(x,y+32,w,3,0,0,0);

		fonte->at(1)->draw(titulo,x+25,y+6,20,0,0,0);

		botao_fecha->desenhar();
		
		for(int i=0; i<conteudo->size(); i++)
		{
			fonte->at(0)->draw(conteudo->at(i), x+2, y+34+(i*20), 12, 0, 0, 0);
		}
	}
}

void janela::movimentar()
{
	if (arrastando==false && pressionado==false)
	{
		if(isButtonPressed(MOUSE::Left))
		{
			if((getMouseX()>x) && (getMouseX()<x+w-32) && (getMouseY()>y) && (getMouseY()<y+32) && aberto==true && arrastando==false) 
			{
				arrastando=true;
				x1=getMouseX()-x;
				y1=getMouseY()-y;
			}
		}
		else
		{
			arrastando=false;
		}
	}

	if (arrastando==true)
	{
		x=getMouseX()-x1;
		y=getMouseY()-y1;
		if (x<0) x=0;
		if (y<0) y=0;
		if (x+w>800) x=800-w;
		if (y+h>600) y=600-h;
		botao_fecha->AtualizaPosicao(x+w-32,y);
	}
}